home *** CD-ROM | disk | FTP | other *** search
- package mx.binding
- {
- import mx.collections.CursorBookmark;
- import mx.collections.ICollectionView;
- import mx.collections.IViewCursor;
- import mx.core.mx_internal;
- import mx.events.CollectionEvent;
-
- use namespace mx_internal;
-
- public class RepeaterItemWatcher extends Watcher
- {
- mx_internal static const VERSION:String = "2.0.1.0";
-
- private var dataProviderWatcher:PropertyWatcher;
-
- private var original:Boolean = true;
-
- private var clones:Array;
-
- public function RepeaterItemWatcher(param1:PropertyWatcher)
- {
- original = true;
- super();
- this.dataProviderWatcher = param1;
- }
-
- private function changedHandler(param1:CollectionEvent) : void
- {
- var _loc2_:ICollectionView = null;
- _loc2_ = ICollectionView(dataProviderWatcher.value);
- if(_loc2_)
- {
- updateClones(_loc2_);
- }
- }
-
- override public function updateParent(param1:Object) : void
- {
- var dataProvider:ICollectionView = null;
- var parent:Object = param1;
- dataProviderWatcher = PropertyWatcher(parent);
- dataProvider = ICollectionView(dataProviderWatcher.value);
- if(dataProvider)
- {
- if(original)
- {
- dataProvider.addEventListener(CollectionEvent.COLLECTION_CHANGE,changedHandler,false,0,true);
- updateClones(dataProvider);
- }
- else
- {
- wrapUpdate(function():void
- {
- var _loc1_:IViewCursor = null;
- _loc1_ = dataProvider.createCursor();
- _loc1_.seek(CursorBookmark.FIRST,cloneIndex);
- value = _loc1_.current;
- updateChildren();
- });
- }
- }
- }
-
- private function updateClones(param1:ICollectionView) : void
- {
- var _loc2_:int = 0;
- var _loc3_:RepeaterItemWatcher = null;
- if(clones)
- {
- clones = clones.splice(0,param1.length);
- }
- else
- {
- clones = [];
- }
- _loc2_ = 0;
- while(_loc2_ < param1.length)
- {
- _loc3_ = RepeaterItemWatcher(clones[_loc2_]);
- if(!_loc3_)
- {
- _loc3_ = RepeaterItemWatcher(deepClone(_loc2_));
- _loc3_.original = false;
- clones[_loc2_] = _loc3_;
- }
- _loc3_.updateParent(dataProviderWatcher);
- _loc2_++;
- }
- }
-
- override protected function shallowClone() : Watcher
- {
- return new RepeaterItemWatcher(dataProviderWatcher);
- }
- }
- }
-
-